package Logica;

import GUI.ClienteLogin;
import GUI.ClientePrincipal;
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;




public class Cliente {

        public static String serverAddress;
        public static String localDirectory;
        static int TIMEOUT = 10 * 1000;
	static int serverPort ;
	public static Socket cs;
        public static Socket ts;
        static ClienteLogin janela;
        public static List<Ficheiro> file = new ArrayList<Ficheiro>();
        public static ClientePrincipal janelaPrincipal;
        public static GereListaFicheiros t;
        //public static String localDirectory = "";
        
        public static class GereListaFicheiros extends Thread
        {
            public GereListaFicheiros()
            {
                this.start();
            }
            
            public void run()
            {   
                List<Ficheiro> lista;
                ObjectInputStream recebe = null;
                try {
                    recebe = new ObjectInputStream(ts.getInputStream());
                    sleep(2000);
                    while(true)
                    {
                       System.out.println("carregar lista");
                       
                       file = (List<Ficheiro>) recebe.readObject();
                       janelaPrincipal.CarregaLista();
                       
                       System.out.println("lista carregada");
                    }
                
                } catch (IOException ex) {
                    Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
                } 
            }
        }
        
        public List<Ficheiro> getFile() 
        {
            return file;
        }

        public static void setFile(List<Ficheiro> file)
        {
            Cliente.file = file;
        }
        
	private class MSG
	{
            String msg;
	}
	
        public static void AtualizaListaFicheiros()
        {
            // Carrega lista para janela
            janelaPrincipal.CarregaLista();
        }
        
        public static void InitJanelaPrincipal()
        {
           /* try {
                ts = new Socket("127.0.0.1", 7000);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Falha na atualização da lista de ficheiros");
            }*/
            t = new GereListaFicheiros();
            janelaPrincipal = new ClientePrincipal();
            janela.dispose();
            janelaPrincipal.setVisible(true);
        }
	
        
	public static void main(String args[]) throws IOException 
	{
            /*
            if( args.le1ngth !=3 )
            {
                System.out.println("Erro de Sintaxe");
                System.err.println("Sintaxe: <Cliente> <PortoServ> <IPserv> <DiretoriaDownload>");
                return;
            }
            

            serverPort = Integer.parseInt(args[0]);
            serverAddress=args[1].trim();
            localDirectory=args[2].trim();
            */
            serverAddress="127.0.0.1";
            serverPort = 6001;
            localDirectory="C:\\Users\\NuNo\\Desktop\\Download";
            
            cs = new Socket(serverAddress, serverPort);
            ts = new Socket(serverAddress, 7000);
            janela = new ClienteLogin();
            janela.setVisible(true);
            
		
	}
}	